private function CRSisEqualFloatFloat(mask, grid, checkCells) result(isEqual)
return .TRUE.
if the two grids have the same Coordinate Reference System,
and the same spatial reference (cellsize, xllxorner, yllcorner, idim, jdim)
If checkCells is given the function checks that grid has
the same active cells of mask.
Arguments
Type |
Intent | Optional | Attributes |
|
Name |
|
type(grid_real),
|
intent(in) |
|
|
:: |
mask |
|
type(grid_real),
|
intent(in) |
|
|
:: |
grid |
|
logical,
|
intent(in), |
optional |
|
:: |
checkCells |
|
Return Value
logical
Variables
Type |
Visibility | Attributes |
|
Name |
| Initial | |
integer,
|
public |
|
:: |
i |
|
|
|
integer,
|
public |
|
:: |
j |
|
|
|
Source Code
FUNCTION CRSisEqualFloatFloat &
!
(mask, grid, checkCells) &
!
RESULT (isEqual)
IMPLICIT NONE
! Arguments with intent(in):
TYPE (grid_real), INTENT(IN) :: mask, grid
LOGICAL, OPTIONAL, INTENT(IN) :: checkCells
!Local declarations:
LOGICAL :: isEqual
INTEGER :: i,j
!------------------------end of declaration------------------------------------
IF ( mask % grid_mapping == grid % grid_mapping .AND. &
mask % cellsize == grid % cellsize .AND. &
mask % xllcorner == grid % xllcorner .AND. &
mask % yllcorner == grid % yllcorner .AND. &
mask % idim == grid % idim .AND. &
mask % jdim == grid % jdim ) THEN
isEqual = .TRUE.
ELSE
isEqual = .FALSE.
END IF
IF ( PRESENT (checkCells) ) THEN
IF (checkCells) THEN
DO i = 1, mask % idim
DO j = 1, mask % jdim
IF ( mask % mat (i,j) /= mask % nodata .AND. &
grid % mat (i,j) == grid % nodata ) THEN
isEqual = .FALSE.
EXIT
END IF
END DO
END DO
END IF
END IF
END FUNCTION CRSisEqualFloatFloat